package cn.uin.domain.shared.adapter.repository;

/**
 * @ClassName Unpaged
 * @Description:不分页的实现 - 表示不需要分页，获取所有数据(使用单例模式)
 * @Author: Administrator
 * @CreateDate: 2025/11/14 17:05
 * @Version: 1.0
 */
public final class UnPaged implements IPageable {

	/**
	 * 单例实例
	 */
	public static final UnPaged INSTANCE = new UnPaged();

	/**
	 * 私有构造函数，确保单例
	 */
	private UnPaged() {}

	@Override
	public int getPageNumber() {
		return 0;
	}

	@Override
	public int getPageSize() {
		// 返回很大的值表示获取所有数据
		return Integer.MAX_VALUE;
	}

	@Override
	public long getOffset() {
		return 0;
	}

	@Override
	public ISort getSort() {
		return ISort.unsorted();
	}

	@Override
	public IPageable next() {
		// 不分页没有下一页的概念
		return this;
	}

	@Override
	public IPageable previousOrFirst() {
		// 不分页没有上一页的概念
		return this;
	}

	@Override
	public IPageable first() {
		return this;
	}

	@Override
	public boolean hasPrevious() {
		// 不分页没有上一页
		return false;
	}

	@Override
	public boolean isPaged() {
		// 明确表示不分页
		return false;
	}

	@Override
	public int hashCode() {
		return UnPaged.class.hashCode();
	}

	@Override
	public String toString() {
		return "UnPaged";
	}
}
